package com.yyds.service.impl;

import com.github.pagehelper.PageHelper;
import com.yyds.common.MyJSON;
import com.yyds.common.R;
import com.yyds.mapper.UserAdminMapper;
import com.yyds.pojo.UserAdmin;
import com.yyds.service.UserAdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service("userAdminService")
public class UserServiceImpl implements UserAdminService {

    @Autowired//自动注入
    private UserAdminMapper userAdminMapper;
    @Override
    public R login(String admin_name, String admin_password) {
        //前端传过来name和password封装到login中去
        UserAdmin login = userAdminMapper.login(admin_name, admin_password);
        //从数据库中去查询有没有name和password符合的字段
        return login != null ? R.ok().data("admin",login):R.error().message("账号或密码错误");
    }


    @Override
    public MyJSON<UserAdmin> selectAllUserAdminService(int page, int limit, UserAdmin userAdmin) {
        System.out.println(userAdmin);
        //查出数据库中有多少条admin的信息,当前查到的是总数居条数
        int count = userAdminMapper.selectAllUserAdminMapper(userAdmin).size();

//        List<UserAdmin> userAdminList = userAdminMapper.selectAllUserAdminMapper(userAdmin);
//        int size = userAdminList.size();

        //开启分页
        PageHelper.startPage(page,limit);
        //开启分页后查询到的数据
        //例:如果每页10条数据,这个list中就是最多十条数据
        List<UserAdmin> list = userAdminMapper.selectAllUserAdminMapper(userAdmin);
        //这一步是创建一个用来和layUI进行交互的对象
        MyJSON<UserAdmin> myJSON = new MyJSON<>();
        //layUi进行分页时后台和layUi返回的code必须是0,layUi才能识别为成功
        myJSON.setCode(0);
        //将数据放入data中
        myJSON.setData(list);
        //这一步是告诉layUi有多少条数据,(long)count进行强转是因为MyJSON类中这个属性是long类型的
        myJSON.setCount((long)count);
        //设置信息
        myJSON.setMsg("成功");

        PageHelper pageHelper = new PageHelper();
        System.out.println("pageHelper"+pageHelper);
        return myJSON;
    }

    @Override
    public R deleteAdminService(UserAdmin userAdmin) {
        //通过获取到userAdmin的id在调用删除的方法。最后类型为int是因为要通过删除后行的数量变化来判断是否删除成功
        int isOk = userAdminMapper.deleteAdminMapper(userAdmin.getAdmin_id());
        return R.ok().message("删除了"+isOk+"条数据");
    }

    @Override
    public R addAdminService(UserAdmin userAdmin) {
        int isOk = userAdminMapper.addAdminMapper(userAdmin);
        if (isOk> 0) {
            return R.ok().message("添加成功");
        }else {
            return R.error().message("添加失败");
        }
    }

    @Override
    public R updateAdminService(UserAdmin userAdmin) {
        try {
            userAdminMapper.updateAdmin(userAdmin);
            return R.ok();
        }catch (Exception e){
            e.printStackTrace();
            return R.error();
        }
    }
}
